package com.polaris.live.im.sfs.bean.live

import android.os.Parcelable
import com.polaris.live.im.sfs.bean.live.ext.UserBasicVo

/**
 * 直播信息
 *
 * @author Created by 半仙 on 2023/9/26/026 19:23
 */
@kotlinx.parcelize.Parcelize
data class LiveRoomInfo(
    /**
     * 主播ID
     */
    val userId: Long,
    /**
     * 主播靓号
     */
    val userNumber: Long,
    /**
     * 用户生日
     */
    val birthday: Long,
    /**
     * 用户性别
     */
    val sex: Int,
    /**
     * 主播昵称
     */
    val nickname: String,
    /**
     * 主播头像
     */
    val avatar: String,
    /**
     * 用户魅力值
     */
    var charms: Long,
    /**
     * 用户豪气值
     */
    var richs: Long,
    /**
     * 创建时间
     */
    val createTime: Long,
    /**
     * 语言
     */
    val language: String? = null,
    /**
     * 用户国家
     */
    val country: String? = null,
    /**
     * 头像框
     */
    val avatarFrame: String? = null,
    /**
     * 勋章
     */
    val medal: String? = null,
    /**
     * 详情id
     */
    val liveId: Long,
    /**
     * 拉流id
     */
    val streamId: String,
    /**
     * 直播类型
     */
    val type: Int,
    /**
     * 展示showGainCoin
     */
    var showGainCoins: Long? = null,
    /**
     * 直播间总消耗coin
     */
    var coins: Long = 0L,
    /**
     * 主播总bonus
     */
    var gainCoins: Long = 0L,
    /**
     * 开播时间
     */
    val startTime: Long,
    /**
     * 观看人数(去重)
     */
    val joinUser: Int,
    /**
     * 观看人数(不去重)
     */
    var joinCount: Int = 0,
    /**
     * 是否离开直播间
     */
    var leave: Boolean = false,
    /**
     * 主播最后离开时间
     */
    val lastLeaveTime: Long? = null,
    /**
     * 是否开启同声传译
     */
    val simulInterpret: Boolean,
    /**
     * 是否试播
     */
    var trial: Boolean,
    /**
     * 剩余试播时长
     */
    val trialTime: Long? = null,

    /**
     * 主题类型 只有派对房需要
     */
    val theme: Int? = null,

    // 一下为麦位新增------------------------------
    /**
     * 麦位用户1
     */
    var siteUser0: String?,
    /**
     * 麦位用户1
     */
    var siteUser1: String?,
    /**
     * 麦位用户2
     */
    var siteUser2: String?,
    /**
     * 麦位用户3
     */
    var siteUser3: String?,
    /**
     * 麦位用户4
     */
    var siteUser4: String?,
    /**
     * 麦位用户5
     */
    var siteUser5: String?,
    /**
     * 麦位用户6
     */
    var siteUser6: String?,
    /**
     * 麦位用户7
     */
    var siteUser7: String?,
    /**
     * 麦位用户8
     */
    var siteUser8: String?,
    /**
     * 麦位用户9
     */
    var siteUser9: String?,
    /**
     * 麦位用户10
     */
    var siteUser10: String?,
    /**
     * 麦位用户11
     */
    var siteUser11: String?,
    /**
     * 麦位用户12
     */
    var siteUser12: String?,
    /**
     * 麦位用户13
     */
    var siteUser13: String?,
    /**
     * 麦位用户14
     */
    var siteUser14: String?,
    /**
     * 麦位用户15
     */
    var siteUser15: String?,
    /**
     * 麦位用户16
     */
    var siteUser16: String?,
    /**
     * 麦位用户17
     */
    var siteUser17: String?,
    /**
     * 麦位用户18
     */
    var siteUser18: String?,
    /**
     * 麦位用户19
     */
    var siteUser19: String?,
    /**
     * 麦位用户20
     */
    var siteUser20: String?,

    /**
     * 主播麦位锁定
     */
    var siteLock0: Boolean?,
    /**
     * 麦位锁定1
     */
    var siteLock1: Boolean?,
    /**
     * 麦位锁定2
     */
    var siteLock2: Boolean?,
    /**
     * 麦位锁定3
     */
    var siteLock3: Boolean?,
    /**
     * 麦位锁定4
     */
    var siteLock4: Boolean?,
    /**
     * 麦位锁定5
     */
    var siteLock5: Boolean?,
    /**
     * 麦位锁定6
     */
    var siteLock6: Boolean?,
    /**
     * 麦位锁定7
     */
    var siteLock7: Boolean?,
    /**
     * 麦位锁定8
     */
    var siteLock8: Boolean?,
    /**
     * 麦位锁定9
     */
    var siteLock9: Boolean?,
    /**
     * 麦位锁定10
     */
    var siteLock10: Boolean?,
    /**
     * 麦位锁定11
     */
    var siteLock11: Boolean?,
    /**
     * 麦位锁定12
     */
    var siteLock12: Boolean?,
    /**
     * 麦位锁定13
     */
    var siteLock13: Boolean?,
    /**
     * 麦位锁定14
     */
    var siteLock14: Boolean?,
    /**
     * 麦位锁定15
     */
    var siteLock15: Boolean?,
    /**
     * 麦位锁定16
     */
    var siteLock16: Boolean?,
    /**
     * 麦位锁定17
     */
    var siteLock17: Boolean?,
    /**
     * 麦位锁定18
     */
    var siteLock18: Boolean?,
    /**
     * 麦位锁定19
     */
    var siteLock19: Boolean?,
    /**
     * 麦位锁定20
     */
    var siteLock20: Boolean?,

    /**
     * 主播麦位状态
     * 0闭麦 1开麦 2禁麦
     */
    var siteMicStatus0: Int?,
    /**
     * 麦位状态1
     */
    var siteMicStatus1: Int?,
    /**
     * 麦位状态2
     */
    var siteMicStatus2: Int?,
    /**
     * 麦位状态3
     */
    var siteMicStatus3: Int?,
    /**
     * 麦位状态4
     */
    var siteMicStatus4: Int?,
    /**
     * 麦位状态5
     */
    var siteMicStatus5: Int?,
    /**
     * 麦位状态6
     */
    var siteMicStatus6: Int?,
    /**
     * 麦位状态7
     */
    var siteMicStatus7: Int?,
    /**
     * 麦位状态8
     */
    var siteMicStatus8: Int?,
    /**
     * 麦位状态9
     */
    var siteMicStatus9: Int?,
    /**
     * 麦位状态10
     */
    var siteMicStatus10: Int?,
    /**
     * 麦位状态11
     */
    var siteMicStatus11: Int?,
    /**
     * 麦位状态12
     */
    var siteMicStatus12: Int?,
    /**
     * 麦位状态13
     */
    var siteMicStatus13: Int?,
    /**
     * 麦位状态14
     */
    var siteMicStatus14: Int?,
    /**
     * 麦位状态15
     */
    var siteMicStatus15: Int?,
    /**
     * 麦位状态16
     */
    var siteMicStatus16: Int?,
    /**
     * 麦位状态17
     */
    var siteMicStatus17: Int?,
    /**
     * 麦位状态18
     */
    var siteMicStatus18: Int?,
    /**
     * 麦位状态19
     */
    var siteMicStatus19: Int?,
    /**
     * 麦位状态20
     */
    var siteMicStatus20: Int?,

    /**
     * 视频状态   20240622新增
     * 0关闭 1开启 2禁止
     */
    var siteVideoStatus0: Int?,
    /**
     * 视频状态1
     */
    var siteVideoStatus1: Int?,
    /**
     * 视频状态2
     */
    var siteVideoStatus2: Int?,
    /**
     * 视频状态3
     */
    var siteVideoStatus3: Int?,
    /**
     * 视频状态4
     */
    var siteVideoStatus4: Int?,
    /**
     * 视频状态5
     */
    var siteVideoStatus5: Int?,
    /**
     * 视频状态6
     */
    var siteVideoStatus6: Int?,
    /**
     * 视频状态7
     */
    var siteVideoStatus7: Int?,
    /**
     * 视频状态8
     */
    var siteVideoStatus8: Int?,
    /**
     * 视频状态9
     */
    var siteVideoStatus9: Int?,
    /**
     * 视频状态10
     */
    var siteVideoStatus10: Int?,
    /**
     * 视频状态11
     */
    var siteVideoStatus11: Int?,
    /**
     * 视频状态12
     */
    var siteVideoStatus12: Int?,
    /**
     * 视频状态13
     */
    var siteVideoStatus13: Int?,
    /**
     * 视频状态14
     */
    var siteVideoStatus14: Int?,
    /**
     * 视频状态15
     */
    var siteVideoStatus15: Int?,
    /**
     * 视频状态16
     */
    var siteVideoStatus16: Int?,
    /**
     * 视频状态17
     */
    var siteVideoStatus17: Int?,
    /**
     * 视频状态18
     */
    var siteVideoStatus18: Int?,
    /**
     * 视频状态19
     */
    var siteVideoStatus19: Int?,
    /**
     * 视频状态20
     */
    var siteVideoStatus20: Int?,

    /**
     * 主播麦位收益
     */
    var siteGainCoin0: Long?,
    /**
     * 麦位收益1
     */
    var siteGainCoin1: Long?,
    /**
     * 麦位收益2
     */
    var siteGainCoin2: Long?,
    /**
     * 麦位收益3
     */
    var siteGainCoin3: Long?,
    /**
     * 麦位收益4
     */
    var siteGainCoin4: Long?,
    /**
     * 麦位收益5
     */
    var siteGainCoin5: Long?,
    /**
     * 麦位收益6
     */
    var siteGainCoin6: Long?,
    /**
     * 麦位收益7
     */
    var siteGainCoin7: Long?,
    /**
     * 麦位收益8
     */
    var siteGainCoin8: Long?,
    /**
     * 麦位收益9
     */
    var siteGainCoin9: Long?,
    /**
     * 麦位收益10
     */
    var siteGainCoin10: Long?,
    /**
     * 麦位收益11
     */
    var siteGainCoin11: Long?,
    /**
     * 麦位收益12
     */
    var siteGainCoin12: Long?,
    /**
     * 麦位收益13
     */
    var siteGainCoin13: Long?,
    /**
     * 麦位收益14
     */
    var siteGainCoin14: Long?,
    /**
     * 麦位收益15
     */
    var siteGainCoin15: Long?,
    /**
     * 麦位收益16
     */
    var siteGainCoin16: Long?,
    /**
     * 麦位收益17
     */
    var siteGainCoin17: Long?,
    /**
     * 麦位收益18
     */
    var siteGainCoin18: Long?,
    /**
     * 麦位收益19
     */
    var siteGainCoin19: Long?,
    /**
     * 麦位收益20
     */
    var siteGainCoin20: Long?,

    /**
     * 主播麦位流id
     */
    var siteStreamId0: String?,
    /**
     * 麦位流id1
     */
    var siteStreamId1: String?,
    /**
     * 麦位流id2
     */
    var siteStreamId2: String?,
    /**
     * 麦位流id3
     */
    var siteStreamId3: String?,
    /**
     * 麦位流id4
     */
    var siteStreamId4: String?,
    /**
     * 麦位流id5
     */
    var siteStreamId5: String?,
    /**
     * 麦位流id6
     */
    var siteStreamId6: String?,
    /**
     * 麦位流id7
     */
    var siteStreamId7: String?,
    /**
     * 麦位流id8
     */
    var siteStreamId8: String?,
    /**
     * 麦位流id9
     */
    var siteStreamId9: String?,
    /**
     * 麦位流id10
     */
    var siteStreamId10: String?,
    /**
     * 麦位流id11
     */
    var siteStreamId11: String?,
    /**
     * 麦位流id12
     */
    var siteStreamId12: String?,
    /**
     * 麦位流id13
     */
    var siteStreamId13: String?,
    /**
     * 麦位流id14
     */
    var siteStreamId14: String?,
    /**
     * 麦位流id15
     */
    var siteStreamId15: String?,
    /**
     * 麦位流id16
     */
    var siteStreamId16: String?,
    /**
     * 麦位流id17
     */
    var siteStreamId17: String?,
    /**
     * 麦位流id18
     */
    var siteStreamId18: String?,
    /**
     * 麦位流id19
     */
    var siteStreamId19: String?,
    /**
     * 麦位流id20
     */
    var siteStreamId20: String?,
    /**
     * 座位数
     */

    var site: Int?,
    /**
     * 是否有锁
     */

    var locked: Boolean,
    /**
     * 禁言用户 这是个list<Long> 可能为null
     */
    var banMessageUser: String?,
    /**
     * 管理员
     */
    var administrator: String?,

    /**
     * 游戏类型
     */
    var gameType: Int?,
    /**
     * 游戏位
     */
    var gameSite: Int?,
    /**
     * 游戏资产类型
     * 0 diamonds  1 游戏币 9免费
     */
    var gameAsset: Int?,
    /**
     * 游戏价格
     */
    var gamePrice: Long?,
    /**
     * 游戏提供商提供的游戏id
     */
    var gameMiniId: String?,
    /**
     * 游戏状态
     * 0 等待中 1已准备好 2进行中 3已结束
     */
    var gameStatus: Int?,
    /**
     * 游戏开始时间
     */
    var gameStartTime: Long?,
    /**
     * banner
     */
    var gameBanner: String?,
    /**
     * icon
     */
    var gameIcon: String?,
    /**
     * gameLogo
     */
    var gameLogo: String?,
    /**
     * 背景
     * 游戏房目前一定会给值
     */
    var background: String?,

    /**
     * 房间皮肤
     */
    var roomTheme: String?,
    /**
     * 游戏背景
     */
    var gameBackground: String?,
    /**
     * 结算后等待时长
     * 秒
     */
    var gameEndWaitSecond: Long?,
    /**
     * 游戏麦位  用户信息跟平台麦位siteUser0一样是ImLiveUserBasicDto
     */
    var gameSite0: String?,
    var gameSite1: String?,
    var gameSite2: String?,
    var gameSite3: String?,
    var gameSite4: String?,
    var gameSite5: String?,
    var gameSite6: String?,
    var gameSite7: String?,
    var gameSite8: String?,
    /**
     * 游戏已加载
     */
    var gameLoad0: Boolean?,
    var gameLoad1: Boolean?,
    var gameLoad2: Boolean?,
    var gameLoad3: Boolean?,
    var gameLoad4: Boolean?,
    var gameLoad5: Boolean?,
    var gameLoad6: Boolean?,
    var gameLoad7: Boolean?,
    var gameLoad8: Boolean?,
    /**
     * 麦位被消费coin
     */
    var siteSpendCoin0: Long?,
    var siteSpendCoin1: Long?,
    var siteSpendCoin2: Long?,
    var siteSpendCoin3: Long?,
    var siteSpendCoin4: Long?,
    var siteSpendCoin5: Long?,
    var siteSpendCoin6: Long?,
    var siteSpendCoin7: Long?,
    var siteSpendCoin8: Long?,
    var siteSpendCoin9: Long?,
    var siteSpendCoin10: Long?,
    var siteSpendCoin11: Long?,
    var siteSpendCoin12: Long?,
    var siteSpendCoin13: Long?,
    var siteSpendCoin14: Long?,
    var siteSpendCoin15: Long?,
    var siteSpendCoin16: Long?,
    var siteSpendCoin17: Long?,
    var siteSpendCoin18: Long?,
    var siteSpendCoin19: Long?,
    var siteSpendCoin20: Long?,

    /**
     * 游戏供应商类型 1百顺 2即构
     */
    val gameProviderType: Int?,
    /**
     * 游戏提供商提供的游戏下载地址  当gameProviderType=1时gameDownloadUrl为下载地址
     */
    val gameDownloadUrl: String?,
    /**
     * 游戏房间id
     */
    var gameRoomId: String?,
    /**
     * 房间id
     */
    var roomId: String?,
    /**
     * 房间名称
     */
    var roomName: String?,
    /**
     * 房间number
     */
    var roomNumber: Long?,
    /**
     * 背景照
     */
    var roomCover: String?,
    /**
     * 用户当前的vip等级
     */
    val vipLevel: Long? = null,
    /**
     * 房间框
     */
    val roomFrame: String? = null,
    /**
     * 昵称颜色
     */
    val nicknameColor: String? = null,
) : Parcelable

/**
 * 这里to出来这缺少账号创建时间，只能用于展示
 */
fun LiveRoomInfo.toUserBasic(): UserBasicVo {
    return UserBasicVo(
        userId,
        userNumber,
        sex,
        avatar,
        nickname,
        birthday,
        createTime,
        1,
        1,
        type,
        0,
        0,
        null,
        avatarFrame,
        richs,
        charms,
        language,
        country,
        null,
        official = 0L
    )
}